#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QUdpSocket>
#include <QTimer>
#include <QDateTime>
#include <QImage>

// UI命名空间声明
namespace Ui {
class Widget;
}

// 主窗口类定义
class Widget : public QWidget
{
    Q_OBJECT  // Qt元对象系统宏，启用信号槽机制

public:
    // 构造函数
    explicit Widget(QWidget *parent = nullptr);

    // 析构函数
    ~Widget();

private slots:  // 槽函数声明区域
    // 处理接收到的UDP数据报
    void processPendingDatagrams();

    // 开始视频流
    void videoSlot();

    // 停止视频流
    void stopSlot();

    // 截图功能
    void photoSlot();

    // 定时器超时处理
    void onTimeoutSlot();

private:
    // UI界面对象指针
    Ui::Widget *ui;

    // UDP套接字对象指针，用于网络通信
    QUdpSocket *udpSocket;

    // 目标端口号
    quint16 peerPort;

    // 目标IP地址
    QHostAddress peerAddr;

    // 当前显示的图像（用于截图）
    QImage currentImage;

    // 临时图像对象（用于处理接收到的图像数据）
    QImage image;

    // 数据缓冲区，用于存储接收到的UDP数据
    QByteArray datagram;

    // 定时器对象指针，用于周期性请求视频流
    QTimer *tim;
};

#endif // WIDGET_H
